github.com/nacmarino/compartilhaR
## var1 var2 x y ## 1 a fechado 2.0 1.0 ## 2 b fechado 3.0 1.5 ## 3 a fechado 2.5 1.4 ## 4 b aberto 5.0 4.2 ## 5 a aberto 6.0 4.0 ## 6 b aberto 5.5 4.6
lattice);base);lattice e base).ggplot2base e lattice.ggplot2 ou através do tidyverse.library(tidyverse)
# outra opção - usar uma ou outra! library(ggplot2)
ilhas.xlsx, e atribua esta tabela ao objeto ilhas.gapminder.ggplot2 começa da mesma forma: através da função ggplot().ggplot(data = ilhas, mapping = aes(x = area, y = riqueza))
ggplot(data = ilhas, mapping = aes(x = area, y = riqueza))
x e y são representados+ ao final da linha.ggplot(data = ilhas, mapping = aes(x = area, y = riqueza)) + geom_point()
x e y são representadosggplot(data = ilhas, mapping = aes(x = area, y = riqueza)) + geom_point()
x e y são representadosggplot2 permite que adicionemos transformações às variáveis que estamos mapeando.ggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_point()
x e y são representadosggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_point()
x e yggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_point() + geom_smooth(method = "lm")
x e yggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_point() + geom_smooth(method = "lm")
ggplot2ggplot2 é começando através de um gráfico em branco, e ir adicionando as informações que queremos mapear camada a camada.ggplot()
ggplot2ggplot()
ggplot2ggplot() + geom_point(data = ilhas, mapping = aes(x = log(area), y = log(riqueza)))
ggplot2ggplot() + geom_point(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_smooth(data = ilhas, mapping = aes(x = log(area), y = log(riqueza)), method = "lm")
ggplot2ggplot(data = ilhas) + geom_point(mapping = aes(x = log(area), y = log(riqueza))) + geom_smooth(mapping = aes(x = log(area), y = log(riqueza)), method = "lm")
ggplot2, que podemos usar ao nosso favor dependendo do objetivo e dados que temos:
ggplot: útil quando todas as informações que irão para cada geom estão dentro de uma mesma tabela.geom: útil quando cada geom representa informações presentes em conjunto de dados diferentes.ggplot: útil quando toda a figura é feita com referência àquela unidade estética vinda daquele conjunto de dados.ggplot2 objeto-a-objetoggplot2: podemos criar uma camada, atribuir ela a um objeto, adicionar mais uma camada a esse objeto e sobre-escrevelo, e assim sucessivamente.figura <- ggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) figura
ggplot2 objeto-a-objetofigura <- figura +
geom_point()
figura
ggplot2 objeto-a-objetofigura <- figura +
geom_smooth(method = "lm")
figura
boxplot demonstrando de que maneira a riqueza de espécies varia em função do tipo de ilha.geombase e no lattice, também podemos modificar o tamanho (size), formato (shape), cor da borda (color), preenchimento (fill), grossura da linha dos símbolos (stroke) e das linhas (size), tipo de linhas (linetype) de cada geom.ggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_point(size = 4)
geomggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_point(size = 4)
geomggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_point(size = 4, shape = 21)
geomggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_point(size = 4, shape = 21, fill = "grey50")
geomggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) +
geom_point(size = 4, shape = 21, fill = "grey50",
colour = "blue3")
geomggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) +
geom_point(size = 4, shape = 21, fill = "grey50",
colour = "blue3", stroke = 2)
geomggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) +
geom_point(size = 4, shape = 21, fill = "grey50",
colour = "blue3", stroke = 2, alpha = 0.4)
boxplot que você criou no exercício anterior. Para saber que tipo de customização pode ser feita a esse geom, você pode consular o arquivo de ajuda dele ?geom_boxplot.geom através da unidade estéticax e y.geom - isto é, fazemos as características deste geom variar em função dos valores destas variáveis.ggplot que todas aquelas características que acabamos de ver para a customização dependem dos valores estéticos que queremos mapear.ggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza), colour = ilha)) + geom_point()
geom através da unidade estéticaggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza), colour = ilha)) + geom_point()
geom através da unidade estética# outra forma de fazer isso ggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_point(mapping = aes(colour = ilha))
geom através da unidade estética# e mais uma ggplot() + geom_point(data = ilhas, mapping = aes(x = log(area), y = log(riqueza), colour = ilha))
geom através da unidade estéticamapping!ggplot, esta característica será mapeada da mesma forma em todas as camadas que você desenhar!geom através da unidade estéticaggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza), colour = ilha,
shape = arquipelago)) +
geom_point()
geom através da unidade estéticaggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza), colour = ilha,
shape = arquipelago, size = produtividade)) +
geom_point()
geom através da unidade estéticaggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_point(mapping = aes(colour = ilha, shape = arquipelago), size = 4)
geom através da unidade estéticaggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + geom_point(mapping = aes(colour = ilha, shape = arquipelago), size = 4)
geom são adicionados?ggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza), colour = ilha)) + geom_point(size = 3)
ggplot2 oferece duas funções que permitem mapear estes painéis em múltiplos facets. No entanto, note que aqui o que estamos fazendo é dividir uma mesma informação entre múltiplos painéis, e não desenhar informações diferentes em cada painel!
facet_wrap: permite que se determine de que forma os painéis serão distribuídos entre linhas e colunas. É uma função bastante flexível.facet_grid: não permite que os painéis sejam distribuídos entre linhas e colunas, que são determinados de acordo com a quantidade de níveis de cada variável que se está mapeando aos painéis.ggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + facet_wrap(~ ilha) + geom_point(size = 3)
ggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + facet_grid(~ ilha) + geom_point(size = 3)
ggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + facet_wrap(arquipelago ~ ilha) + geom_point(size = 3)
ggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza))) + facet_grid(arquipelago ~ ilha) + geom_point(size = 3)
geomscale_fill_?: modifica o preenchimento do objeto (fill) de forma determinada pelo usuário;scale_colour_?: modifica a cor dos pontos ou das bordas do objeto geométrico (colour) de forma determinada pelo usuário;scale_shape_?: modifica o formato dos pontos (shape) de forma determinada pelo usuário;scale_size_?: modifica o tamanho dos pontos (size) de forma determinada pelo usuário;scale_alpha_?: modifica a transparência (alpha) de forma determinada pelo usuário;scale_linetype_?: modifica o tipo de linha (linetype) de forma determinada pelo usuário;scale_x_?: modifica as opções de apresentação do eixo x;scale_y_?: modifica as opções de apresentação do eixo y.geomggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza), shape = ilha)) + geom_point(size = 4) + geom_smooth(method = "lm") + scale_shape_manual(values = c(21, 22))
geomgeomggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza),
shape = ilha, fill = ilha)) +
geom_point(size = 4) +
geom_smooth(method = "lm") +
scale_shape_manual(values = c(21, 22)) +
scale_fill_manual(values = c("firebrick2", "deepskyblue"))
geomboxplot que apresenta de que forma a riqueza de espécies variam em função do tipo de ilha, mas fazendo um painel para cada tamanho de arquipélago e utilizando as funções scale.
geomscale_x_? e scale_y_? para realizar diversos tipos de manipulação aos eixos x e y.figura <- ggplot(data = ilhas, mapping = aes(x = log(area), y = log(riqueza),
shape = ilha, fill = ilha, colour = ilha)) +
geom_point(size = 4) +
geom_smooth(method = "lm") +
scale_shape_manual(values = c(21, 22)) +
scale_fill_manual(values = c("firebrick2", "deepskyblue"))
figura
geom## adicionando um título adequado a cada eixo figura + scale_x_continuous(name = "Área (km², log)") + scale_y_continuous(name = "Riqueza de Espécies (log)")
geom## modificar a sequência de números de um dos eixos figura + scale_x_continuous(name = "Área (km², log)", breaks = seq(from = -3, to = 12, by = 3)) + scale_y_continuous(name = "Riqueza de Espécies (log)")
geom## modificar o texto dos eixos
figura +
scale_x_continuous(name = "Área (km²)", breaks = seq(from = -3, to = 12, by = 3),
labels = c(-3, "", "3", "", 9, "")) +
scale_y_continuous(name = "Riqueza de Espécies")
boxplot que você criou no último exercício.geomggplot(data = ilhas, mapping = aes(x = arquipelago,
y = log(riqueza), fill = arquipelago)) +
geom_boxplot(outlier.colour = NA, width = 0.5, size = 1)
geomggplot(data = ilhas, mapping = aes(x = arquipelago,
y = log(riqueza), fill = arquipelago)) +
geom_boxplot(outlier.colour = NA, width = 0.5, size = 1)
geom# através da função reorder
ggplot(data = ilhas, mapping = aes(x = reorder(arquipelago, log(riqueza)),
y = log(riqueza), fill = arquipelago)) +
geom_boxplot(outlier.colour = NA, width = 0.5, size = 1)
geom e da figura# através da função fct_relevel, disponível no pacote forcats ggplot(data = ilhas, mapping = aes( x = forcats::fct_relevel(arquipelago, "pequeno", "medio", "grande"), y = log(riqueza), fill = arquipelago)) + geom_boxplot(outlier.colour = NA, width = 0.5, size = 1)
figura <- ggplot(data = ilhas,
mapping = aes(x = log(area), y = log(riqueza),
shape = ilha, fill = ilha, colour = ilha)) +
geom_point(size = 4) +
geom_smooth(method = "lm") +
scale_shape_manual(values = c(21, 22)) +
scale_fill_manual(values = c("firebrick2", "deepskyblue")) +
scale_x_continuous(name = "Área (km², log)", breaks = seq(from = -3, to = 12, by = 3)) +
scale_y_continuous(name = "Riqueza de Espécies (log)")
figura
ggplot2 é esse fundo cinza e grids, que são legais para explorar visualmente os dados, mas são péssimos para uma publicação.ggplot2 são o tema dele, sendo controlados por uma função de mesmo nome - theme.ggplot2 quando você carrega o pacote.figura + theme_bw()
figura + theme_classic()
figura + theme_minimal()
ggthemes.library(ggthemes) figura + theme_base()
figura + theme_excel_new()
ggplot2, o ideal é sempre personalizarmos aquilo que estamos desenhando. Para modificar o tema desta forma, precisamos modificar os padrões de valores que existe dentro da função theme, adicionando esta camada de personalização à nossa figura.theme()
element_text: elementos textuais;element_rect: elementos que têm a forma de um retângulo;element_line: elementos que têm a forma de linha;element_blank: suprime uma opção.figura + theme(legend.position = "none")
figura +
theme(legend.position = "none",
panel.grid = element_blank())
figura +
theme(legend.position = "none",
panel.grid = element_blank(),
panel.background = element_blank())
figura +
theme(legend.position = "none",
panel.grid = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"))
figura +
theme(legend.position = "none",
panel.grid = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"),
axis.text = element_text(colour = "black", size = 12))
figura +
theme(legend.position = "none",
panel.grid = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"),
axis.text = element_text(colour = "black", size = 12),
axis.title = element_text(colour = "black", size = 14, face = "bold"))
ggplot2 também permite que coloquemos as especificações do tema que personalizamos em um objeto, o qual podemos adicionar diretamente à figura que criamos.meu_tema <- theme(legend.position = "none",
panel.grid = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"),
axis.text = element_text(colour = "black", size = 12),
axis.title = element_text(colour = "black", size = 14, face = "bold"))
figura <- figura + meu_tema figura
ggplot2ggplot2 utilizando a função ggsave.ggsave(filename = "especie_area.png", # nome/diretorio onde a figura será salva
plot = figura, # objeto que contém a figura que você quer exportar
width = 80, height = 80, units = "mm", # tamanho final da figura
dpi = 150 # qualidade da imagem
)
boxplot que você tem trabalhado nos exercícios anteriores, e exporte ele para algum diretório no seu computador.ggplot2 ao tidyverseggplot2 é fornecendo uma tabela que contenha estes valores para a função ggplot, e associando o geom_bar ao geom_errorbar.## Warning: package 'bindrcpp' was built under R version 3.4.4
## # A tibble: 2 x 3 ## ilha riqueza_media erro ## <chr> <dbl> <dbl> ## 1 costeira 29.5 1.71 ## 2 oceanica 15.4 2.61
ggplot2 ao tidyverseggplot(data = sumario, mapping = aes(x = ilha, y = riqueza_media, fill = ilha)) +
geom_bar(stat = "identity", colour = "black") +
geom_errorbar(mapping = aes(ymin = riqueza_media - erro, ymax = riqueza_media + erro),
width = 0.5)
x e y, respectivamente;x e y;y.ggplot2 ao tidyverseggplot2 é parte integrante do tidyverse, que foi todo pensado com a finalidade de encurtar a distância entre a ideia e o resultado.ggplot.ilhas %>%
group_by(ilha) %>%
summarise(riqueza_media = mean(riqueza, na.rm = TRUE),
erro = sd(riqueza, na.rm = TRUE)/sqrt(n())) %>%
ggplot(data = sumario, mapping = aes(x = ilha, y = riqueza_media, fill = ilha)) +
geom_bar(stat = "identity", colour = "black") +
geom_errorbar(mapping = aes(ymin = riqueza_media - erro, ymax = riqueza_media + erro),
width = 0.5)
ggplot2 ao tidyverseggplot2 como uma ferramenta para a análise exploratória e visualização dos dados, mas não utilize diretamente o resultado daquilo que você produz através dele nas suas publicações.ggplot2. Veremos como fazer isso na próxima aula.ggplot2